home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Special 25 / AMIGAplus Sonderheft 25 (2000)(Falke)(DE)(Track 1 of 4)[!].iso / Updates / PowerPC / pdflib / bind / perl / pdfclock.pl < prev    next >
Perl Script  |  2000-05-16  |  2KB  |  92 lines

  1. #!/usr/bin/perl
  2. # PDFlib client: pdfclock example in Perl
  3. # (C) Thomas Merz 1998-99
  4.  
  5. use pdflib 2.01;
  6. package pdflib;
  7.  
  8. $RADIUS = 200.0;
  9. $MARGIN = 20.0;
  10.  
  11. $p = PDF_new();
  12.  
  13. die "Couldn't open PDF file" if (PDF_open_file($p, "pdfclock_pl.pdf") == -1);
  14.  
  15. PDF_set_info($p, "Creator", "pdfclock.pl");
  16. PDF_set_info($p, "Author", "Thomas Merz");
  17. PDF_set_info($p, "Title", "PDF clock (Perl)");
  18.  
  19. PDF_begin_page($p, 2 * ($RADIUS + $MARGIN), 2 * ($RADIUS + $MARGIN));
  20.  
  21. PDF_set_transition($p, "wipe");
  22. PDF_set_duration($p, 0.5);
  23.  
  24. PDF_translate($p, $RADIUS + $MARGIN, $RADIUS + $MARGIN);
  25. PDF_setrgbcolor($p, 0.0, 0.0, 1.0);
  26. PDF_save($p);
  27.  
  28. # minute strokes 
  29. PDF_setlinewidth($p, 2.0);
  30. for ($alpha = 0; $alpha < 360; $alpha += 6)
  31. {
  32.     PDF_rotate($p, 6.0);
  33.     PDF_moveto($p, $RADIUS, 0.0);
  34.     PDF_lineto($p, $RADIUS-$MARGIN/3, 0.0);
  35.     PDF_stroke($p);
  36. }
  37.  
  38. PDF_restore($p);
  39. PDF_save($p);
  40.  
  41. # 5 minute strokes
  42. PDF_setlinewidth($p, 3.0);
  43. for ($alpha = 0; $alpha < 360; $alpha += 30)
  44. {
  45.     PDF_rotate($p, 30.0);
  46.     PDF_moveto($p, $RADIUS, 0.0);
  47.     PDF_lineto($p, $RADIUS-$MARGIN, 0.0);
  48.     PDF_stroke($p);
  49. }
  50.  
  51. ($tm_sec,$tm_min,$tm_hour) = localtime(time);
  52.  
  53. # draw hour hand 
  54. PDF_save($p);
  55. PDF_rotate($p, (-(($tm_min/60.0) + $tm_hour - 3.0) * 30.0));
  56. PDF_moveto($p, -$RADIUS/10, -$RADIUS/20);
  57. PDF_lineto($p, $RADIUS/2, 0.0);
  58. PDF_lineto($p, -$RADIUS/10, $RADIUS/20);
  59. PDF_closepath($p);
  60. PDF_fill($p);
  61. PDF_restore($p);
  62.  
  63. # draw minute hand
  64. PDF_save($p);
  65. PDF_rotate($p, (-(($tm_sec/60.0) + $tm_min - 15.0) * 6.0));
  66. PDF_moveto($p, -$RADIUS/10, -$RADIUS/20);
  67. PDF_lineto($p, $RADIUS * 0.8, 0.0);
  68. PDF_lineto($p, -$RADIUS/10, $RADIUS/20);
  69. PDF_closepath($p);
  70. PDF_fill($p);
  71. PDF_restore($p);
  72.  
  73. # draw second hand
  74. PDF_setrgbcolor($p, 1.0, 0.0, 0.0);
  75. PDF_setlinewidth($p, 2);
  76. PDF_save($p);
  77. PDF_rotate($p, -(($tm_sec - 15.0) * 6.0));
  78. PDF_moveto($p, -$RADIUS/5, 0.0);
  79. PDF_lineto($p, $RADIUS, 0.0);
  80. PDF_stroke($p);
  81. PDF_restore($p);
  82.  
  83. # draw little circle at center
  84. PDF_circle($p, 0, 0, $RADIUS/30);
  85. PDF_fill($p);
  86.  
  87. PDF_restore($p);
  88. PDF_end_page($p);
  89.  
  90. PDF_close($p);
  91. PDF_delete($p);
  92.